import $ from 'jquery'

export default {
    state: {
        id: '',
        username: '',
        photo: '',
        token: '',
        is_login: false,
        pulling_info: true,
        rating: '----'
    },
    getters: {}, // 读取 state 数据，但不不能修改
    mutations: {
        // 对 state 直接修改的操作，但 mutation 不能执行异步操作
        updateUser (state, user) {
            state.id = user.id
            state.username = user.username
            state.photo = user.photo
            state.rating = user.rating
            state.is_login = user.is_login
        },
        updateToken (state, token) {
            state.token = token
        },
        logout (state) {
            state.id = ''
            state.username = ''
            state.photo = ''
            state.token = ''
            state.is_login = false
        },
        updatePollingInfo (state, pulling_info) {
            state.pulling_info = pulling_info
        },
    },
    actions: {
        login (context, data) {
            $.ajax({
                // url: 'https://cloudwebsite/api/user/account/token/',
                url: 'http://127.0.0.1:3000/api/user/account/token/',
                type: 'post',
                data: {
                    username: data.username,
                    password: data.password,
                },
                success (resp) {
                    if (resp.error_message === 'success') {
                        localStorage.setItem('jwt_token', resp.token)
                        context.commit('updateToken', resp.token)
                        data.success(resp)
                    } else {
                        data.error(resp)
                    }
                },
                error (resp) {
                    data.error(resp)
                },
            })
        },
        getInfo (context, data) {
            $.ajax({
                // url: 'https://cloudwebsite/api/user/account/info/',
                url: 'http://127.0.0.1:3000/api/user/account/info/',
                type: 'get',
                headers: {
                    Authorization: 'Bearer ' + context.state.token,
                },
                success (resp) {
                    if (resp.error_message === 'success') {
                        context.commit('updateUser', {
                            ...resp,
                            is_login: true,
                        })
                        data.success(resp)
                    } else {
                        data.error(resp)
                    }
                },
                error (resp) {
                    data.error(resp)
                },
            })
        },
        logout (context) {
            localStorage.removeItem('jwt_token')
            context.commit('logout')
        },
    },
    modules: {},
}
